# Инструкция по установке Nextcloud на OrangePi PC
![Nextcloud на OrangePi PC](https://notabug.org/Black_Triangle/Manual_Nextcloud_on_Orange_Pi/raw/2b0053ab1ebe0e856368a7e2cb25d68ad0e3fcc0/promo.jpg)

## Потребуется:

* Orange Pi PC - покупал тут http://ali.pub/4ydnlp

* Карточка MicroSD - покупал тут http://ali.pub/4ydogt

* Внешний жесткий диск с USB - взял у соседа

* Кабель Ethernet - гдето валялся

* Видео: https://www.youtube.com/watch?v=aJ3gHHFATyc

## Приступим:

Качай armbian от сюда https://www.armbian.com/ под свою модель платы
и запихивай в microSD

## Врубаем, конектимся по ssh и погнали
Обновляем ОС
```
apt update
apt upgrade
```
Перезагружаемся 
`reboot`
### Создаем клиент VPN
Прыгаем в каталог wireguard
`cd /etc/wireguard`

Создаем клиентский конфиг

`nano wg0-client.conf` 

С содержанием
```
[Interface]
PrivateKey = oJ2zключГГГГГГГГГГГГГГГГГГГГГГГГГHY=
Address = 10.8.0.4
DNS = 10.8.0.1

[Peer]
PublicKey = CLключГГГГГГГГГГГГГГГГГГГГГГГГXg=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = айпи_сервера:порт_сервера
PersistentKeepalive = 25
```
ВлююЮЮююЧай!
`wg-quick up wg0-client`
Теперь айпишник нашей платы будет 10.8.0.4
### Установка Apache и PHP
Бахаем индейца

`sudo apt install apache2`

Чтобы установить PHP и нужные нам пакеты

`sudo apt install php7.3 php7.3-gd php7.3-sqlite3 php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-mysql php7.3-bz2 php7.3-intl php7.3-smbclient php7.3-imap php7.3-gmp`

Перезагрузим индейца
`sudo service apache2 restart `
### Настройка базы данных MySQL и пользователя для Nextcloud
Установка Марии

`sudo apt install mariadb-server`

Одеваем Марию

`sudo mysql_secure_installation`

Всегда говори да!

Создаем базу

`sudo mysql -u root -p`

Назавем ее nextclouddb

`CREATE DATABASE nextclouddb;`

И создадим юзера nextclouduser [PASSWORD] меняй на свой

`CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '[PASSWORD]';`

Даем пользователю трогать Марию

`GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextclouduser'@'localhost';`

Очищаем таблицу привелегий

`FLUSH PRIVILEGES;`

### Загрузка Nextcloud на OrangePi
Прыгаем каталог html
`cd /var/www/`

Бахаем Nextcloud

`sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2`

Открываем посылку

`sudo tar -xvf latest.tar.bz2`

Теперь нам нужно создать каталог данных для работы с Nextcloud

`sudo mkdir -p /var/www/nextcloud/data`

Передаем управление

`sudo chown -R www-data:www-data /var/www/nextcloud/`

Даем разрешения

`sudo chmod 750 /var/www/nextcloud/data`

### Настройка Apache для Nextcloud
Создадим файл, в котором будут храниться наши изменения конфигурации для Nextcloud

`sudo nano /etc/apache2/sites-available/nextcloud.conf`

Бахаем туда это:

```
Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>
```
Говорим индейцу это съесть

`sudo a2ensite nextcloud.conf`

Перезапускаем индейца

`sudo systemctl reload apache2`
### Nextcloud Начальная настройка
Делаем как в видео и внимательно слушаем https://www.youtube.com/watch?v=aJ3gHHFATyc

### Перемещение папки данных Nextcloud
Подключаем жесткий

Помни он должен быть в `ext4`

Смотрим как он обзываеться

`fdisk -l`

Создаем папку для монтирования:

`sudo mkdir /media`

Монтируем

`sudo mount Как_он_обзываеться /media`

Проверяем

`mount`

Перемещаем все что есть на жесткий

`sudo mv -v /var/www/nextcloud/data /media`

Прыгаем в каталог конфигурации для Nextcloud

`cd /var/www/nextcloud/config`

Делаем копию на всякий

`sudo cp -p config.php config.php.bk`

Редактируем конфиг

`sudo nano config.php`

В этом файле нам нужно изменить следующую строку:

`'datadirectory' => '/var/www/nextcloud/data',`

заменить на 

`'datadirectory' => '/media/data',`

Соблюдаем права

`sudo chown -R www-data:www-data /media/data`

Прыгаем в браузер и проверяем

> Если пишет ошибку

```
cd media
touch .ocdata
```

Потом должно фурычить

### Увеличение максимального размера загрузки Nextcloud

Редактируем конфиг

`sudo nano /etc/php/7.3/apache2/php.ini`

Меняем вот эти строки:

```
post_max_size = 8M
upload_max_filesize = 2M
```

На вот эти:

```
post_max_size = 8000M
upload_max_filesize = 8000M
```

Значения можешь придумать свои

Перезапускай индейца

`sudo service apache2 restart`

### Настройка SSL для Nextcloud

Создадим каталог 

`sudo mkdir -p /etc/apache2/ssl`

Создаем сертеффикат

`sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt`

На все вопросы можно прожать enter

Включим модуль SSL для Apache

`sudo a2enmod ssl`

Редактируем конфиг

`sudo nano /etc/apache2/sites-available/default-ssl.conf`

Изменить:

```
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
```

На

```
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
```

Подключаем конфиг и перезагружаем индейца

```
sudo a2ensite default-ssl.conf
sudo service apache2 restart
```

Врубаем HTTPS на всю катушку

Редактируем конфиг

`sudo nano /etc/apache2/sites-available/000-default.conf`

Все удаляем и пишем

```
<VirtualHost *:80>
   ServerAdmin example@example

   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
```

Кормим индейцу и перезапускаем

```
sudo a2enmod rewrite
sudo service apache2 restart
```

Вот и все, делов то

### Заключение

Спасибо за внимание к проекту друг, для создания этой инструкции и видео пришлось потратить несколько больше сил и времени чем занимают обычные мои ролики, если у тебя есть возможность поддержать канал, то буду рад любой поддержке:

* Bitcoin: 1AWBMoeV8UEybQi4QrQMmeFX1sXvRLDeCn

* Ethereum: 0xB151c82A264eF0EA848c120444173658BFA18Cf9

* DASH: XcNtFGW1ydGLudvTPWoBvPZZxG844EvksR

* Zcash: t1hCJwasRozdkoaK9HLpngoEVPQhEZpxdFT

* Monero: 41iNuQsc6GjZofH3XkKwNYVSXVsrjipfVjjNR3nbsL5XjJMFTfykW1T6CkYz1StdXH2t8dhnjUTT9FwEPpbsFVxjHuuYabQ

* Litecoin: LNpw5QS5fvH1NW5AMp35zzMs1FYKuAUuPP

* Bitcoin Cash: qrs29h849m9vj02ljd2utf6g7e7hxnntqvkhz8r8u3

* Ethereum Classic: 0xc20a61Ec5765aC0059D6e85f069B440889EBfcC5